#include "form1.h"
#include "ui_form1.h"



#include <QToolBox>
#include <QVBoxLayout>
#include <QToolButton>
#include <QGroupBox>
#include <QFormLayout>
#include <QLineEdit>
#include <QComboBox>


int Form1_Scroll_Width;
int Shiju_number;
int Weixing_number;
int Zaihe_number;
int Huanjing_number;
int Plane_number;

int Yueshu_flag; //0视距，1卫通, 2载荷,3环境,4无人机平台

Form1::Form1(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Form11)
{
    ui->setupUi(this);

    initMenu(); //初始化菜单

    Shiju_number=0;
    Weixing_number=0;
    Zaihe_number=0;
    Huanjing_number=0;
    Plane_number=0;

    ui->toolBox1->removeItem(0);
    Add_Shiju(); //初始化添加一项
    ui->toolBox_2->removeItem(0);
    Add_Weitong(); //初始化添加一项
    ui->toolBox_3->removeItem(0);
    Add_Zaihe(); //初始化添加一项
    ui->toolBox_4->removeItem(0);
    Add_Huanjing(); //初始化添加一项
    ui->toolBox_5->removeItem(0);
    Add_Plane(); //初始化添加一项

}


Form1::~Form1()
{
    delete ui;
}

// 获取视距链路 QLineEdit 的数据
void Form1::on_pushButton_clicked()
{
    for(int i=0;i<Shiju_number+1;i++){
        QLineEdit *l1 = findChild<QLineEdit*>(QString("text1_1_%1").arg(i)); //通道1
        QLineEdit *l2 = findChild<QLineEdit*>(QString("text1_2_%1").arg(i)); //通道2
        QLineEdit *l3 = findChild<QLineEdit*>(QString("text1_3_%1").arg(i)); //坐标
        if(l1){
//            qDebug()<< l1->text();
            QString shiju_channel_1 = l1->text();
            qDebug()<< shiju_channel_1;
            int num = shiju_channel_1.toInt();  //必须是整数才能转格式，否则会转换成0
            qDebug()<< num;
        }
        if(l2){
//            qDebug()<< l2->text();
            QString shiju_channel_2 = l2->text();
            qDebug()<< shiju_channel_2;
        }
        if(l3){
//            qDebug()<< l3->text();
            QString shiju_position_1 = l3->text();
            qDebug()<< shiju_position_1;

            char* ch;
            QByteArray ba = shiju_position_1.toLatin1();
            ch=ba.data();
            qDebug()<< ch[0];

//            char charArray[] = {'H', 'e', 'l', 'l', 'o', '\0'};
//            QString str = QString::fromLocal8Bit(charArray);


        }
    }
}



// ///////////////////添加视距链路选项
void Form1::Add_Shiju()
{
    QWidget *pGroup1 = new QWidget;
    pGroup1->resize(140, 70); // 设置窗口宽度\高度

    QFormLayout* layout = new QFormLayout();

    // 动态创建对象
    QLineEdit* text1_1 = new QLineEdit();
    QLineEdit* text1_2 = new QLineEdit();
    QLineEdit* text1_3 = new QLineEdit();

    //修改控件尺寸
    text1_1->setFixedWidth(70);
    text1_1->setFixedHeight(19);
    text1_2->setFixedWidth(70);
    text1_2->setFixedHeight(19);
    text1_3->setFixedWidth(70);
    text1_3->setFixedHeight(19);

    layout->addRow("通道1",text1_1);
    layout->addRow("通道2",text1_2);
    layout->addRow("坐标",text1_3);

    //调整间隙
    layout->setSpacing(5);
//   layout->setHorizontalSpacing(1);  //控件之间水平间隙
//   layout->setVerticalSpacing(1);  //行与行之间的垂直间隙
    //对齐方式
//    layout->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow);
//    layout->setRowWrapPolicy(QFormLayout::WrapLongRows);//该参数通常适用于小屏幕中，当标签和文本框在本行显示不全时，文本框会显示在下一行，使得标签独占一行
//    layout->setLabelAlignment(Qt::AlignLeft);//设置标签的对齐方式
    setLayout(layout);
    pGroup1->setLayout(layout);


    //名字递增
    Shiju_number = Shiju_number+1;
    // 视距、三行、item
    QString oName= QString::number(Shiju_number);
    text1_1->setObjectName("text1_1_"+oName);
    text1_2->setObjectName("text1_2_"+oName);
    text1_3->setObjectName("text1_3_"+oName);


    QString str = QString("测控站点%1").arg(Shiju_number);
//    qDebug()<< Shiju_number;
//    qDebug()<< str;


    QPushButton *button_new1 = new QPushButton();
    button_new1->setText(str);
    ui->toolBox1->addItem(pGroup1, str);
    ui->toolBox1->setCurrentIndex(Shiju_number);     //设置当前选项卡下标

    if (Shiju_number>1)
    {
    // toolBox1的长度、scrollAreaWidgetContents_3的长度要增加
    ui->scrollAreaWidgetContents_2->setFixedHeight(ui->scrollAreaWidgetContents_2->height()+26); //设置滚动轴的有效区域
    ui->toolBox1->setFixedHeight(ui->toolBox1->height()+26);
    }
}

//删除视距链路选项
void Form1::Delete_Shiju()
{
    Shiju_number = Shiju_number-1;
    qDebug()<< ui->toolBox1->count();  //获取选项卡数
//    qDebug()<< ui->toolBox1->indexOf(ui->page); //0
//    qDebug()<< ui->toolBox1->indexOf(ui->page_2);  //1
//    qDebug()<< ui->toolBox1->indexOf(ui->page_3);  //2

    ui->toolBox1->removeItem(Shiju_number); //删除最下面的item
    ui->scrollAreaWidgetContents_2->setFixedHeight(ui->scrollAreaWidgetContents_2->height()-30); //设置滚动轴的有效区域
    ui->toolBox1->setFixedHeight(ui->toolBox1->height()-30);

}


// ///////////////////添加卫通链路选项
void Form1::Add_Weitong()
{
    QWidget *pGroup2 = new QWidget;
//    pGroup2->resize(140, 70); // 设置窗口宽度\高度

    QFormLayout* layout = new QFormLayout();

    QLineEdit* text2_1 = new QLineEdit();
    QLineEdit* text2_2 = new QLineEdit();

    //修改控件尺寸
    text2_1->setFixedWidth(60);
    text2_1->setFixedHeight(20);
    text2_2->setFixedWidth(60);
    text2_2->setFixedHeight(20);

    layout->addRow("通道1",text2_1);
    layout->addRow("通道2",text2_2);
    //调整间隙
    layout->setSpacing(5);
    setLayout(layout);
    pGroup2->setLayout(layout);


    //名字递增
    Weixing_number = Weixing_number+1;
    // 视距、三行、item
    QString oName= QString::number(Weixing_number);
    text2_1->setObjectName("text1_1_"+oName);
    text2_2->setObjectName("text1_2_"+oName);

    QString str = QString("通信卫星%1").arg(Weixing_number);

    QPushButton *button_new2 = new QPushButton();
    button_new2->setText(str);
    ui->toolBox_2->addItem(pGroup2, str);
    ui->toolBox_2->setCurrentIndex(Weixing_number);     //设置当前选项卡下标

    if (Weixing_number>1)
    {
    // toolBox1的长度、scrollAreaWidgetContents_3的长度要增加
    ui->scrollAreaWidgetContents_6->setFixedHeight(ui->scrollAreaWidgetContents_6->height()+26); //设置滚动轴的有效区域
    ui->toolBox_2->setFixedHeight(ui->toolBox_2->height()+26);
    }

}

//删除卫通链路选项
void Form1::Delete_Weitong()
{
    Weixing_number = Weixing_number-1;
    qDebug()<< ui->toolBox_2->count();  //获取选项卡数

    ui->toolBox_2->removeItem(Weixing_number); //删除最下面的item
    ui->scrollAreaWidgetContents_6->setFixedHeight(ui->scrollAreaWidgetContents_6->height()-26); //设置滚动轴的有效区域
    ui->toolBox_2->setFixedHeight(ui->toolBox_2->height()-26);

}



// ///////////////////添加载荷资源选项
void Form1::Add_Zaihe()
{
    QWidget *pGroup3 = new QWidget;
//    pGroup2->resize(140, 70); // 设置窗口宽度\高度

    QFormLayout* layout = new QFormLayout();

    QLineEdit* text5 = new QLineEdit();
    QLineEdit* text6 = new QLineEdit();

    //修改控件尺寸
    text5->setFixedWidth(60);
    text5->setFixedHeight(25);
    text6->setFixedWidth(60);
    text6->setFixedHeight(25);

    layout->addRow("工作参数",text5);
    layout->addRow("工作状态",text6);
    //调整间隙
    layout->setSpacing(5);
    setLayout(layout);
    pGroup3->setLayout(layout);


    //名字递增
    Zaihe_number = Zaihe_number+1;
    QString str = QString("载荷资源%1").arg(Zaihe_number);

    QPushButton *button_new3 = new QPushButton();
    button_new3->setText(str);
    ui->toolBox_3->addItem(pGroup3, str);
    ui->toolBox_3->setCurrentIndex(Zaihe_number);     //设置当前选项卡下标

    if (Zaihe_number>1)
    {
    // toolBox1的长度、scrollAreaWidgetContents_3的长度要增加
    ui->scrollAreaWidgetContents_7->setFixedHeight(ui->scrollAreaWidgetContents_7->height()+26); //设置滚动轴的有效区域
    ui->toolBox_3->setFixedHeight(ui->toolBox_3->height()+26);
    }
}

//删除载荷资源选项
void Form1::Delete_Zaihe()
{
    Zaihe_number = Zaihe_number-1;
    qDebug()<< ui->toolBox_3->count();  //获取选项卡数


    ui->toolBox_3->removeItem(Zaihe_number); //删除最下面的item
    ui->scrollAreaWidgetContents_7->setFixedHeight(ui->scrollAreaWidgetContents_7->height()-26); //设置滚动轴的有效区域
    ui->toolBox_3->setFixedHeight(ui->toolBox_3->height()-26);

}


// ///////////////////添加环境约束选项
void Form1::Add_Huanjing()
{
    QWidget *pGroup4 = new QWidget;
//    pGroup2->resize(140, 70); // 设置窗口宽度\高度

    QFormLayout* layout = new QFormLayout();

    // 第一列的两个标签
    QLineEdit* text7 = new QLineEdit();

    //第二列的输入框架
    QComboBox *comboBox1 = new QComboBox; //comboBox
    comboBox1->addItem("禁飞区模型");
    comboBox1->addItem("探测类威胁");
    comboBox1->addItem("杀伤类威胁");

    //修改控件尺寸
    text7->setFixedWidth(60);
    text7->setFixedHeight(25);
    comboBox1->setFixedWidth(60);
    comboBox1->setFixedHeight(25);

    layout->addRow("威胁类型",comboBox1);
    layout->addRow("威胁坐标",text7);

    //对齐方式
    layout->setRowWrapPolicy(QFormLayout::DontWrapRows);
    //调整间隙
    layout->setSpacing(5);
    setLayout(layout);
    pGroup4->setLayout(layout);


    //ToolBox的Item的按钮，名字递增
    Huanjing_number = Huanjing_number+1;
    QString str = QString("环境约束%1").arg(Huanjing_number);

    QPushButton *button_new4 = new QPushButton();
    button_new4->setText(str);
    ui->toolBox_4->addItem(pGroup4, str);
    ui->toolBox_4->setCurrentIndex(Huanjing_number);     //设置当前选项卡下标

    if (Huanjing_number>1)
    {
    // toolBox1的长度、scrollAreaWidgetContents_3的长度要增加
    ui->scrollAreaWidgetContents_8->setFixedHeight(ui->scrollAreaWidgetContents_8->height()+26); //设置滚动轴的有效区域
    ui->toolBox_4->setFixedHeight(ui->toolBox_4->height()+26);
    }
}

//删除环境约束选项
void Form1::Delete_Huanjing()
{
    Huanjing_number = Huanjing_number-1;
    qDebug()<< ui->toolBox_4->count();  //获取选项卡数

    ui->toolBox_4->removeItem(Huanjing_number); //删除最下面的item
    ui->scrollAreaWidgetContents_8->setFixedHeight(ui->scrollAreaWidgetContents_8->height()-26); //设置滚动轴的有效区域
    ui->toolBox_4->setFixedHeight(ui->toolBox_4->height()-26);

}


// ///////////////////添加无人机平台约束选项
void Form1::Add_Plane()
{
    QWidget *pGroup5 = new QWidget;
//    pGroup2->resize(140, 70); // 设置窗口宽度\高度

    QFormLayout* layout = new QFormLayout();

    //第二列的框
    //第二列的输入框架
    QComboBox *comboBox2 = new QComboBox; //comboBox
    comboBox2->addItem("型号1");
    comboBox2->addItem("型号2");

    // 第二列的空白输入框
    QLineEdit* text8 = new QLineEdit();
    QLineEdit* text9 = new QLineEdit();
    QLineEdit* text10 = new QLineEdit();
    QLineEdit* text11 = new QLineEdit();
    QLineEdit* text12 = new QLineEdit();


    //修改控件尺寸
    comboBox2->setFixedWidth(55);
    text8->setFixedWidth(55);
    text9->setFixedWidth(55);
    text10->setFixedWidth(55);
    text11->setFixedWidth(55);
    text12->setFixedWidth(55);

    comboBox2->setFixedHeight(21);
    text8->setFixedHeight(21);
    text9->setFixedHeight(21);
    text10->setFixedHeight(21);
    text11->setFixedHeight(21);
    text12->setFixedHeight(21);


    layout->addRow("飞行平台类型",comboBox2);
    layout->addRow("最大巡航速度",text8);
    layout->addRow("最大俯仰角",text9);
    layout->addRow("最小转弯半径",text10);
    layout->addRow("爬升率",text11);
    layout->addRow("油量",text12);

    //对齐方式
    layout->setRowWrapPolicy(QFormLayout::DontWrapRows); //保持一行
    //调整间隙
    layout->setSpacing(5);
    setLayout(layout);
    pGroup5->setLayout(layout);


    //ToolBox的Item的按钮，名字递增
    Plane_number = Plane_number+1;
    qDebug()<<Plane_number;

    QString str = QString("飞行平台%1").arg(Plane_number);

    QPushButton *button_new5 = new QPushButton();
    button_new5->setText(str);
    ui->toolBox_5->addItem(pGroup5, str);
    ui->toolBox_5->setCurrentIndex(Plane_number);     //设置当前选项卡下标

    if (Plane_number>1)
    {
    // toolBox1的长度、scrollAreaWidgetContents_3的长度要增加
    ui->scrollAreaWidgetContents->setFixedHeight(ui->scrollAreaWidgetContents->height()+26); //设置滚动轴的有效区域
    ui->toolBox_5->setFixedHeight(ui->toolBox_5->height()+26);
    }
}

//删除无人机平台约束选项
void Form1::Delete_Plane()
{
    Plane_number = Plane_number-1;
    qDebug()<< ui->toolBox_5->count();  //获取选项卡数

    ui->toolBox_5->removeItem(Plane_number); //删除最下面的item
    ui->scrollAreaWidgetContents->setFixedHeight(ui->scrollAreaWidgetContents->height()-35); //设置滚动轴的有效区域
    ui->toolBox_5->setFixedHeight(ui->toolBox_5->height()-35);

}




//重写mousePressEvent单击事件
void Form1::mousePressEvent(QMouseEvent *event)
{
    switch (event->button()) {
    case Qt::LeftButton:
        emit clicked(); //发送左键单击信号
//        qDebug()<<"发送左键单击信号";
        break;

    case Qt::RightButton:
        emit clicked_right(); //发送右键单击信号
//        qDebug()<<"发送右键单击信号";
        break;

    default:break;  //否则有警告28...
    }

    //将该事件传给父类处理
    QWidget::mousePressEvent(event);
}

//重写mouseDoubleClickEvent双击事件
void Form1::mouseDoubleClickEvent(QMouseEvent *event)
{
    if (event->button() == Qt::LeftButton)
    {
        emit doubleClicked(); //发送左键双击信号
    }
    //将该事件传给父类处理
    QWidget::mouseDoubleClickEvent(event);
}


//初始化菜单
void Form1::initMenu(){
    setContextMenuPolicy(Qt::ActionsContextMenu);
    /* 创建右键菜单 */
    QAction *test_menu1 = new QAction("增加",this); //添加测试功能菜单
    QAction *test_menu2 = new QAction("删除",this);
    QAction *test_menu3 = new QAction("编辑",this);
    QAction *test_menu4 = new QAction("查找",this);

    /* 添加菜单项 */
    menu->addAction(test_menu1);
    menu->addAction(test_menu2);
    menu->addAction(test_menu3);
    menu->addAction(test_menu4);


    /* 连接槽函数 */
    // 这里有问题，this是有反应的，但是放ui->pushbutton2就没反应（Qlable也不行？）
//    connect(this,SIGNAL(clicked_right()),this,SLOT(right_menu())); //连接按钮点击事件，此处不连接就不会弹出右键菜单
    connect(test_menu1,SIGNAL(triggered()),this,SLOT(menu_slot1())); //连接 测试 功能
    connect(test_menu2,SIGNAL(triggered()),this,SLOT(menu_slot2())); //

}

//弹出右键菜单
void Form1::right_menu(){
//    // 方法一
//    // 获取光标所在位置
//    int x = cursor().pos().x();
//    int y = cursor().pos().y();

//    //获取菜单大小
//    int w = menu->geometry().size().rwidth();
//    int h = menu->geometry().size().rheight();

//    //在光标位置弹出菜单
//    menu->setGeometry(x,y,2*w,2*h); //在这里修改菜单的横纵坐标、宽高
//    menu->show();

    // 这个方法也可以显示菜单栏
    menu->exec(QCursor::pos());
}


// 菜单栏的每一个按钮的槽函数
//菜单的增加功能
void Form1::menu_slot1(){
    //这里写入功能实现代码
    switch(Yueshu_flag)
    {
    case 0:Add_Shiju();
    case 1:Add_Weitong();
    case 2:Add_Zaihe();
    case 3:Add_Huanjing();
    case 4:Add_Plane();
    default:break;
    }
}
//菜单的删除功能
void Form1::menu_slot2(){
    switch(Yueshu_flag)
    {
    case 0:Delete_Shiju(); //照理说，规范的写法应该在每个case的后面添加一个break;
    case 1:Delete_Weitong();
    case 2:Delete_Zaihe();
    case 3:Delete_Huanjing();
    case 4:Delete_Plane();
    default:break;
    }
}


//视距选项管理按钮，左键显示界面
void Form1::on_pushButton_2_clicked()
{
    //    QMouseEvent *ev;
    //    QString str = QString("鼠标按下了%1").arg(ev->button());
    //    qDebug()<<str;

    // 这个方法也可以显示菜单栏
    Yueshu_flag=0;
    menu->exec(QCursor::pos());

}

//卫通选项管理按钮，左键显示界面
void Form1::on_pushButton_7_clicked()
{
    // 这个方法也可以显示菜单栏
    Yueshu_flag=1;
    menu->exec(QCursor::pos());

}

//载荷选项管理按钮，左键显示界面
void Form1::on_pushButton_9_clicked()
{
    // 这个方法也可以显示菜单栏
    Yueshu_flag=2;
    menu->exec(QCursor::pos());
}


void Form1::on_pushButton_6_clicked()
{
    // 这个方法也可以显示菜单栏
    Yueshu_flag=3;
     menu->exec(QCursor::pos());
}


void Form1::on_pushButton_8_clicked()
{
    // 这个方法也可以显示菜单栏
     Yueshu_flag=4;
     menu->exec(QCursor::pos());
}


